package io.wanghaoran.project.module.system.service;

import io.wanghaoran.project.module.system.entity.UserTokensLog;
import io.wanghaoran.project.module.system.mapper.UserTokensLogMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service;
import org.apache.commons.lang3.StringUtils;

import java.util.List;

/**
* <p>
 *  服务实现类
 * </p>
*
* @author authorname
* @since 2025-07-30
*/
@Service
public class UserTokensLogService extends ServiceImpl<UserTokensLogMapper, UserTokensLog> {

  /**
  * 分页列表
  * @param param 参数
  * @return 结果
  */
  public List<UserTokensLog> page(UserTokensLog param) {
    QueryWrapper<UserTokensLog> queryWrapper = new QueryWrapper<>();
    queryWrapper.lambda()
      // 用户ID
          .eq(param.getUserId() != null, UserTokensLog::getUserId, param.getUserId())
          // 用户名称
          .eq(!StringUtils.isEmpty(param.getUserName()), UserTokensLog::getUserName, param.getUserName())
          // 调用方法
          .eq(!StringUtils.isEmpty(param.getCallMethod()), UserTokensLog::getCallMethod, param.getCallMethod())
          // 扣除点数
          .eq(param.getDeductTokens() != null, UserTokensLog::getDeductTokens, param.getDeductTokens())
            // 逻辑删除 0 否、1 是
            .eq(UserTokensLog::getDeleted, 0)
    .orderByDesc(UserTokensLog::getCreateTime);
    return list(queryWrapper);
  }

  /**
  * 详情
  * @param id 主键
  * @return 结果
  */
  public UserTokensLog info(Long id) {
    return getById(id);
  }

  /**
  * 新增
  * @param param 根据需要进行传值
  */
  public void add(UserTokensLog param) {
    save(param);
  }

  /**
  * 修改
  * @param param 根据需要进行传值
  */
  public void modify(UserTokensLog param) {
    updateById(param);
  }

  /**
  * 删除(单个条目)
  * @param id 主键
  */
  public void remove(Long id) {
    removeById(id);
  }

  /**
  * 删除(多个条目)
  * @param ids 主键数组
  */
  public void removes(List<Long> ids) {
     removeByIds(ids);
   }

   public void removeByUserName(String userName) {
    QueryWrapper<UserTokensLog> queryWrapper = new QueryWrapper<>();
    queryWrapper.lambda().eq(UserTokensLog::getUserName, userName);
    remove(queryWrapper);
   }

   public void renameByUserName(String userName) {
    QueryWrapper<UserTokensLog> queryWrapper = new QueryWrapper<>();
    queryWrapper.lambda().eq(UserTokensLog::getUserName, userName);
    
    UserTokensLog updateEntity = new UserTokensLog();
    updateEntity.setUserName("该用户已被删除");
    
    update(updateEntity, queryWrapper);
   }
   
   
   
}
